package com.nageoffer.jobtrain.common.framework.idempotent;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 防止用户频繁申请验证码请求
 * 频繁申请 -（验证码有效期 - 验证码剩余有效期）< 60
 *
 * @Target(ElementType.METHOD) 表示作用于方法上面
 * @Retention(RetentionPolicy.RUNTIME) 使用AOP机制在运行时动态加载
 * author：唐晨
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface NoSmsFrequentRequest {
    /**
     * Redis Key 前缀
     */
    String keyPrefix() default "";

    /**
     * 验证手机号
     */
    String keyField() default "phoneNumber";

    /**
     * 验证码总有效期（单位：秒）
     */
    long totalExpireTime() default 180L;

    /**
     * 验证码最小请求间隔时间（单位：秒）
     */
    long minimumInterval() default 60L;
}
